Багатопарадигмова мова програмування
Багатопарадигмова мова програмування (також мультипарадигмальна мова програмування) — переважно мова програмування, розроблена спеціально як інструмент багатопарадигмового програмування, тобто образотворчі можливості якого спочатку передбачалось успадкувати від декількох, найчастіше неспоріднених мов.
Іноді термін багатопарадигмова мова програмування визначають як «мову, яка підтримує більше ніж одну парадигму програмування. Таке визначення є недостатньо точним, бо саме поняття парадигми програмування різні автори визначають по-різному. Наприклад, якщо рахувати парадигмами програмування рекурсію, структурне програмування і присвоювання, то виявиться, що під це визначення підійдуть мало чи не всі наявні мови програмування, за винятком деяких особливих випадків (наприклад, мови Haskell, де немає присвоювання у звичному вигляді).
Мета розроблення багатопарадигмових мов програмування полягає здебільшого в тому, щоб дозволити програмістам використовувати кращий інструмент для роботи, визнаючи, що жодна парадигма не розв'язує всі проблеми найлегшим чи найефективнішим способом.
Один з найбільш амбітних прикладів — Oz, яка є логічною, функційною, об'єктно-орієнтованою, мовою рівночасного програмування тощо. Oz розроблено за десять років, її мета — об'єднати поняття, які звичаєво пов'язані з різними програмними парадигмами.
Як одну з найуспішніших багатопарадигмових мов програмування часто називають мову C++.
Приклади багатопарадигмових мов програмування, розділених за кількістю парадигм, що підтримуються:
- Функційна, об'єктно-орієнтована:
- Функційна, процедурна:
- Функційна, логічна:
- AFL
- Curry
- Mercury
- Функційна, процедурна, об'єктно-орієнтована:
- Perl (з версії 5)
- Python
- JavaScript
- Tcl
- PHP (з версії PHP 5.3 частково підтримується функційне програмування)
- Узагальнена, процедурна, об'єктно-орієнтована:
- Функційна, узагальнена, процедурна, об'єктно-орієнтована:
- Функційна, процедурна, об'єктно-орієнтована, рівночасна:
- Об'єктно-орієнтована, узагальнена, процедурна, аспектно-орієнтована:
- Логічна, програмування в обмеженнях, функційна (як ледачі, так і «енергійні» обчислення), процедурна (імперативна), об'єктно-орієнтована, розподілена, рівнобіжна (паралельна)
- Oz